特殊記号
<,>,|,&,ワイルドカードなどという記号は、シェルの中で特別な意味を持つ特殊記号のことです。
次に一覧表を載せます。記号によっては、使い方で、色々有ります。
特殊記号表
記号 読み 意味 ~チルダ ホームデレクトリ 論理否定 `ダッシュ コマンド置換(旧式) #シャープ コメント 引数の数 $ダラー 変数記号 &アンバサンド バックグランジョブ 論理積 *文字列ワイルドカード 加算 位置パラメーター (サブシェル開始 )サブシェル終了 \バックスラッシュ 次の文字のクオーティング |パイプ 論理和 [ブラケット 文字セットワイルドカード開始 ]ブラケット 文字セットワイルドカード終了 {ブレース コマンドブロック開始 ブレース構文開始 }ブレース コマンドブロック終了 ブレース構文終了 ;セミコロン シェルコマンドセパレーター 'クォーテーション 強いクオーティング "ダブルクォーテーション 弱いクオーティング <入力リダイレクション >出力リダイレクション /スラッシュ デレクトリ名セパレーター ?クェスチョン 単独文字ワイルドカード 終了ステータス !イクスクラテーション 論理否定 プロセスID 予約語 :コロン 何もしない -ハイフン 減算 シェルオプション @アットマーク 位置パラメーター _アンダースコア 最後の引数 =イコール イコール ^排他的論理和 %あまり .ドット カレントデレクトリファイル読み込み実行 ,カンマ 区切り 0-9数値 数値で文字でない。 ドット ., source
.△filename [arguments]
例)
.△.bash_profile は、 source .bash_profile と同じになる。
バックグランドジョブ & アンバサンド
よく使うコマンドになります。
マルチタスク処理をしているコンピューターでは、jpbを裏面で動かし別に画面で作業を行うことは、通常の作業であるこのとき、&を使用することでバックグランドで別のタスクを動かすことが可能である。この場合のキー入力は、バックグランドジョブでは実行できない。画面出力関係の制御に関しては、立ち上がってるジョブから画面に都度出力されてくるので意味の不明なものとなってします。この場合は、リダイレクションを使用してfile出力に変更して作業するのが普通である。
command &
ないすなコマンド、nice
nice +number command default +4です。数字が大きいほど優先順位が小さくなります。
このコマンドを付けることにより付けられたコマンドは、優先度を変えることができる。ただし、niceの後の複合コマンドは、'クオーとされる必要がある。
クォーティング
色々な特殊記号指示される命令をただの文字列として解釈させるための手段の一つです。
シングルクオート '
シングルクオートで囲まれたものは、すべて文字列として解釈されます。
例外として、シングルクォート中の ' \ " シングルクォート、バックスラッシュ、ダブルクォートは、すべてシングルクォートとして解釈される。('abc'\"def' -> abc'defとなる)例)
echo 1 * 2 > 3 の不等式は、不当な式である。
結果は、1という文字がカレントデレクトリの3という名前のファイルに入り。*処理結果はないので、残りを画面・font face="Times New Roman, Times, serif">\示して、
2の不等式は、不当に式であると・font face="Arial, Helvetica, sans-serif">\示してしいます。
echo '1 * 2 > 3 の不等式は、不当な式である。'
シングルクォーテションで囲むことによってそのまま・font face="Arial, Helvetica, sans-serif">\示できるようになる。
echo 1 * 2 > 3 の不等式は、不当な式である。
注)
find . -name '*.c' という使い方をすると、良いようだ。
ダブルクォート "
処理されないもの
パイプ、エリアス、チルダ展開、ワイルドカード展開、セパレーター(スペース、:)などの分割はされない。処理されるもの
パラメーター置換、コマンド置換、数値演算式、の評価、バックシュラッシュ効果(\' \/ \$ \& \" etc.)例)
flag="日の丸"
echo "日本の旗は、$flagです。 \!”
日本の旗は、日の丸です。 !
となる。
クォーティング規則例
person=spaceforce hogepeeのホームデレクトリは、/export/home/hogepeeとすると。
式 値 備考 $person spaceforce personの値を表示 '$person' $person 処理されないので$personを表示 "$person" spaceforce ダブの影響を受けないので値を表示 "'$person'" spaceforce シンをダブで打ち消しているので値を表示 \$person $person $を文字化しているのでそのまま表示 ~hogepee /export/home/hogepee ゛チルダ展開の結果を表示 '~hogepee' ~hogepee 処理されないのでそのまま表示 "~hogepee" ~hogepee 処理されないのでそのまま表示 "'~hogepee'" ~hogepee シンをダブで打ち消しているが、ダブでそのまま表示 \~hogepee ~hpgepee $を文字化しているのでそのまま表示 バックスラッシュ エスケープ \
バックシュラッシュの次の一文字を表記された文字として処理する。
例)
echo \\ \$ \" \> \<
\ $ " > <
echo \"2 \* 3 \> 3 \" この不等号の式は、不当である。
"2 * 3 > 3 " この不等号の式は、不当である。
コマンドライン継続
コマンドラインが一行に収まらなくなってしまうことは、良くあることです。この場合の対策方法です。
クォートを使う方法。
$ echo '今日は、いい天気なので
> 外で遊ぶ事にします。みんなで
> 遊びましょう。'
ダブルクォートを使う方法。
$ echo "今日は、いい天気なので
> 外で遊ぶ事にします。みんなで
> 遊びましょう。"
バックシュラッシュ エスケープを使って改行を消す方法。
$ echo 今日は、いい天気なので\
> 外で遊ぶ事にします。みんなで\
> 遊びましょう。